Sieci komputerowe — ćwiczenia 6
Temat zajęć: Programowanie sieci w Pythonie.
Literatura:
- R. Stevens, "Biblia TCP/IP" (tom 1 - Protokoły i tom 2 - Implementacje)
- Tutorial Pythona
- Dokumenty RFC wersja on-line
Zadanie 0
Wykonaj program z zadania domowego ćwiczeń 3 (parametry: ip=150.254.77.129 port=4444).
Uwaga:
Poniższe przykłady dla Pythona 2.x
Przykład 1
Przykładowe programy serwera i klienta TCP (zaczerpnięte z tutoriala).
Plikserver.py pobierz#!/usr/bin/python import socket # Import socket module s = socket.socket() # Create a socket object host = socket.gethostname() # Get local machine name port = 12345 # Reserve a port for your service. s.bind((host, port)) # Bind to the port s.listen(5) # Now wait for client connection. while True: c, addr = s.accept() # Establish connection with client. print 'Got connection from', addr c.send('Thank you for connecting') c.close() # Close the connection
Plikclient.py pobierz
#!/usr/bin/python import socket # Import socket module s = socket.socket() # Create a socket object host = socket.gethostname() # Get local machine name port = 12345 # Reserve a port for your service. s.connect((host, port)) print s.recv(1024) s.close # Close the socket when done
Zadanie 1
Sprawdź składnię metod klasy Socket w Pythonie. Znajdź różnice i podobieństwa względem interface'u gniazd BSD w języku C.Zadanie 2
Napisać podobny prosty „komunikator” wykorzystujący protokół UDP.Przykład 2
Prosty „klient” HTTP (zapytanie GET):
Plik httpGET.py pobierz
import httplib conn = httplib.HTTPConnection("marcing.faculty.wmi.amu.edu.pl") conn.request("GET", "/DSIKLI0/index.html") r1 = conn.getresponse() print r1.status, r1.reason, r1.read() data1 = r1.read() conn.request("GET", "/index2.html") r2 = conn.getresponse() print r2.status, r2.reason data2 = r2.read() conn.close()Przykład 3
Zapytanie HTTP HEAD (może przydać się w części dotyczącej analizy sieci):
Plik httpHEAD.py pobierz
import httplib conn = httplib.HTTPConnection("marcing.faculty.wmi.amu.edu.pl") conn.request("HEAD","/DSIKLI0/index.html") res = conn.getresponse() print res.status, res.reason data = res.read() print len(data) data == ''Przykład 4
Zapytanie HTTP POST (może przydać się w części dotyczącej analizy sieci):
Plik httpPOST.py pobierz
import httplib, urllib params = urllib.urlencode({'@number': 12524, '@type': 'issue', '@action': 'show'}) headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"} conn = httplib.HTTPConnection("bugs.python.org") conn.request("POST", "", params, headers) response = conn.getresponse() print response.status, response.reason data = response.read() 'Redirecting to http://bugs.python.org/issue12524' conn.close()Zadanie 3
Napisz klienta SMTP lub POP3 wykorzystując odpowiednie moduły Pythona.Zadanie 4
Jak napisać server HTTP w Pythonie?
Powtórka działu
Begin main navigation